package com.example.myapplication.view;

import android.graphics.Point;
import android.view.MotionEvent;
import android.view.View;
import com.example.myapplication.until.Globals;
import com.example.myapplication.until.ImageUtils;
import com.example.myapplication.until.JBoxUtils;
import com.example.myapplication.vo.Bird;
import org.jbox2d.common.Vec2;

public class MyTouch implements View.OnTouchListener {

    private MainView mainView ;

    MyTouch(MainView mainView){
        this.mainView = mainView ;
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        float x = event.getX();
        float y = event.getY();

        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            // 判断按下的位置是否在弹弓的附近
            if (Math.abs(x - mainView.nowPosition.x - mainView.dangongCenterPoint[0]) <= Globals.PIECE_WIDTH
                    && Math.abs(y - mainView.nowPosition.y
                    - mainView.dangongCenterPoint[1]) <= Globals.PIECE_HEIGH) {
                if(!mainView.auto){
                    mainView.isBird=true;
                }
            }else if(Math.abs(x-Globals.PIECE_WIDTH/2)<=Globals.PIECE_WIDTH&&
                    Math.abs(x-Globals.PIECE_HEIGH/2)<=Globals.PIECE_HEIGH){
                //开启自动飞鸟
                mainView.startPoint = new Point((int) x, (int) y);
                mainView.startNowPosition = new Point(mainView.nowPosition.x,
                        mainView.nowPosition.y);
                if(mainView.auto){
                    mainView.auto = false ;
                    mainView.autoImg = ImageUtils.getAutoImg() ;
                }else{
                    mainView.auto = true ;
                    mainView.autoImg = ImageUtils.getManfulImg() ;
                    mainView.nowPosition = new Point(0, -Globals.SCREEN_HEIGH);
                    if(mainView.bird!=null){
                        mainView.bird.setCenter(false);
                        mainView.bird = null ;
                    }
                }
            } else if(Math.abs(x-Globals.SCREEN_WIDTH+Globals.PIECE_WIDTH/2)<=Globals.PIECE_WIDTH&&
                    Math.abs(y-Globals.SCREEN_HEIGH/3.0f-Globals.PIECE_HEIGH/2)<=Globals.PIECE_HEIGH){
                //开始挑战
                mainView.btn = ImageUtils.getEndImg() ;
                mainView.init();
                mainView.timer.start();
                Globals.SCORE = 0 ;
            }else {
                if(!mainView.auto){
                    mainView.slide = true ;
                    mainView.startPoint = new Point((int) x, (int) y);
                    mainView.startNowPosition = new Point(mainView.nowPosition.x,
                            mainView.nowPosition.y);
                    // 当前要移动屏幕位置,取消中心
                    if(mainView.bird!=null){
                        mainView.bird.setCenter(false);
                    }
                }
            }
        } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
            if (mainView.isBird) {
                mainView.fingerPoint[0] = x - mainView.nowPosition.x;
                mainView.fingerPoint[1] = y - mainView.nowPosition.y;
            }else if(mainView.auto){
                mainView.bridShotter.setPb(new Point((int)x,(int)y));
                mainView.fingerPoint[0] = x - mainView.nowPosition.x;
                mainView.fingerPoint[1] = y - mainView.nowPosition.y;
            } else if(mainView.slide){
                //拖动的代码
                mainView.nowPosition.x = mainView.startNowPosition.x
                        + (int) (x - mainView.startPoint.x);
                mainView.nowPosition.y = mainView.startNowPosition.y
                        + (int) (y - mainView.startPoint.y);
            }
        } else if (event.getAction() == MotionEvent.ACTION_UP) {
            if (mainView.isBird&&!JBoxUtils.world.isLocked()) {
                if(mainView.bird!=null){
                    //保证正确
                    mainView.bird.setCenter(false);
                }
                // 建立一个新的Bird
                mainView.bird = new Bird(1,Bird.getBridIndex());
                Globals.BIRDLIST.add(mainView.bird) ;
                mainView.isBird = true;
                // 设置刚体对象
                mainView.bird.setBody(JBoxUtils.createCircle(10, x
                                - mainView.nowPosition.x, y - mainView.nowPosition.y,
                        JBoxUtils.BIRD_TYPE, 0, false));

                //向量 给他一个冲量
                Vec2 v1 = new Vec2(
                        -(x - mainView.nowPosition.x - mainView.dangongCenterPoint[0]) * 25,
                        -(y - mainView.nowPosition.y - mainView.dangongCenterPoint[1]) * 25) ;
                //System.out.println(v1);

                mainView.bird.getBody().applyLinearImpulse(v1,mainView.bird.getBody().getWorldCenter());

                mainView.isBird = false;

                // 当创建一个新的飞行的鸟时,需要以其为中心
                mainView.bird.setCenter(true);

            } else {
                if(mainView.slide){
                    mainView.nowPosition.x = mainView.startNowPosition.x
                            + (int) (x - mainView.startPoint.x);
                    mainView.nowPosition.y = mainView.startNowPosition.y
                            + (int) (y - mainView.startPoint.y);
                    mainView.slide=false ;
                }
            }
        }

        if (mainView.nowPosition.x > 0) {
            mainView.nowPosition.x = 0;
        }
        if (mainView.nowPosition.y > 0) {
            mainView.nowPosition.y = 0;
        }
        if (mainView.nowPosition.x < -Globals.SCREEN_WIDTH) {
            mainView.nowPosition.x = -Globals.SCREEN_WIDTH;
        }
        if (mainView.nowPosition.y < -Globals.SCREEN_HEIGH) {
            mainView.nowPosition.y = -Globals.SCREEN_HEIGH;
        }
        mainView.postInvalidate();
        return false;
    }
}
